package cn.chen.数据结构.栈;

/**
 * 链表模拟栈
 * */
public class ListStack {

    public Node top;

    // 入栈
    public void push(Node node){

        if(isEmpty()){  // 栈为空

            top=node;
            return;
        }
        // 将新节点添加到栈顶
        node.next=top;
        top=node;   // 将指针指向栈顶
    }
    // 出栈
    public Node pop(){

        if(isEmpty()){

            throw new RuntimeException("栈为空，没有元素出栈");
        }
        Node pop=top;   // 获取栈顶元素
        top=top.next;   // 将指针指向栈顶元素的下一个元素
        return pop;
    }
    // 遍历栈
    public void showStack(){

        if(isEmpty()){
            System.out.println("链表为空");
            return;
        }
        Node temp=top;
        while (temp!=null){

            System.out.println(temp.data);
            temp=temp.next;
        }
    }
    // 判断栈是否为空
    public boolean isEmpty(){

        return top==null;
    }

}
